* From Swipes to Votes: The Role of the VAA Voteswiper in Polarizing Voter Choices for the 2025 General Election in Germany
* Fröhle, Marius/Schleehauf, Ronald/Reinbold, Judith/Kurz, Kira Renée/Jäckle, Sebastian

*** Voteswiper German federal Election 2025 - Post-usage survey
*** field time: 31.01.-23.02.2025

clear all

*ssc install tabcount, replace
*ssc install asdoc, replace
*ssc install tabout, replace
*net install alluvial, from("https://raw.githubusercontent.com/asjadnaqvi/stata-alluvial/main/installation/") replace
*ssc install heatplot, replace
*ssc install palettes, replace
*ssc install colrspace, replace

*cd  "YOURPATH\Replication"


**************************************************************************************************************************************************************
*
*					Party Votes Distances in Voteswiper Data
*
**************************************************************************************************************************************************************



**************************************************************************************************************************************************************
*
*					percent Übereinstimmung ten parties
*
**************************************************************************************************************************************************************
import excel "data\Voteswiper 2025 party answers.xlsx", sheet("ten_parties_percent") firstrow clear
graph hbar (asis) percent, over(parties, sort(percent) descending) fxsize(30) ytitle("Percent matching")
graph save "results\dump\percentage_matching_bar.gph", replace

import excel "data\Voteswiper 2025 party answers.xlsx", sheet("ten_parties_percent") firstrow clear
graph dot (asis) percent, over(parties, sort(percent) descending) fxsize(30) ytitle("Percent matching") noextendline yline(20 40 60 80 100, lcolor(%50))
graph save "results\dump\percentage_matching_dot.gph", replace



**************************************************************************************************************************************************************
*
*					Heatmap ten parties
*
**************************************************************************************************************************************************************

import excel "data\Voteswiper 2025 party answers.xlsx", sheet("ten_parties") firstrow clear


* dissimilarity matrix Simple Matching
matrix dissim match = CDUCSU AfD SPD Greens Left FDP BSW Volt FV APP, match var
heatplot match, values(format(%9.2f)) color(blues,  intensity(0.6)) aspectratio(1) lower nodiagonal legend(off) title("Simple Matching")
graph save "results\dump\heatmap_c.gph", replace 



* dissimilarity matrix Jaccard
matrix dissim jac = CDUCSU AfD SPD Greens Left FDP BSW Volt FV APP, Jac var
heatplot jac, values(format(%9.2f)) color(blues,  intensity(0.6)) aspectratio(1) lower nodiagonal legend(off) title("Jaccard")
graph save "results\dump\heatmap_d.gph", replace 


* dissimilarity matrix Russel
matrix dissim rus = CDUCSU AfD SPD Greens Left FDP BSW Volt FV APP, Russell var
heatplot rus, values(format(%9.2f)) color(blues,  intensity(0.6)) aspectratio(1) lower nodiagonal legend(off) title("Russel")
graph save "results\dump\heatmap_e.gph", replace


* dissimilarity matrix Rogers
matrix dissim rog = CDUCSU AfD SPD Greens Left FDP BSW Volt FV APP, Rogers var
heatplot rog, values(format(%9.2f)) color(blues,  intensity(0.6)) aspectratio(1) lower nodiagonal legend(off) title("Rogers")
graph save "results\dump\heatmap_f.gph", replace


* dissimilarity matrix Manhatta
matrix dissim manhatt = CDUCSU AfD SPD Greens Left FDP BSW Volt FV APP, manhatt var
heatplot manhatt, values(format(%9.1f)) color(blues,  intensity(0.6)) aspectratio(1) fysize(50)  lower nodiagonal legend(off) title("Manhattan distances")
graph save "results\dump\fig1_b.gph", replace



* dissimilarity matrix Manhatta
matrix dissim manhatt = CDUCSU AfD SPD Greens Left FDP BSW Volt FV APP, manhatt var
heatplot manhatt, values(format(%9.1f)) color(blues,  intensity(0.6)) aspectratio(1)  lower nodiagonal legend(off) title("Manhattan")
graph save "results\dump\heatmap_a.gph", replace 


* dissimilarity matrix Euklid
matrix dissim euclid = CDUCSU AfD SPD Greens Left FDP BSW Volt FV APP, euclid var
heatplot euclid, values(format(%9.2f)) color(blues,  intensity(0.6)) aspectratio(1)  lower nodiagonal legend(off) title("Euclid")
graph save "results\dump\heatmap_b.gph", replace 


graph combine "results\dump\heatmap_a.gph" "results\dump\heatmap_b.gph" "results\dump\heatmap_c.gph" "results\dump\heatmap_d.gph" "results\dump\heatmap_e.gph" "results\dump\heatmap_f.gph", scale(.8)
graph export "results\dump\heatmap_ten_ANHANG.pdf", replace
graph export "results\dump\heatmap_ten_ANHANG.emf", replace



**************************************************************************************************************************************************************
*
*					MDS ten parties
*
**************************************************************************************************************************************************************

* MDS: Euclidean - classical MDS
import excel "data\Voteswiper 2025 party answers.xlsx", sheet("ten_parties_transp") firstrow clear
mds Q*, id(Nr) method(classic) measure(L2) 
graph display, xsize(4) ysize(4) 
gr_edit .note.draw_view.setstyle, style(no)
// note edits

gr_edit .style.editstyle margin(top) editcopy
gr_edit .style.editstyle boxstyle(linestyle(align(outside))) editcopy
// Graph edits
graph save "results\dump\fig1_c.gph", replace  


**************************************************************************************************************************************************************
*
*					Fig A2: Heatmap all parties
*
**************************************************************************************************************************************************************

* MDS: Manhattan - classical MDS
import excel "data\Voteswiper 2025 party answers.xlsx", sheet("ten_parties_transp") firstrow clear
mds Q*, id(Nr) method(classic) measure(manhattan) 
graph display, xsize(4) ysize(4) 
gr_edit .note.draw_view.setstyle, style(no)
// note edits

gr_edit .style.editstyle margin(top) editcopy
gr_edit .style.editstyle boxstyle(linestyle(align(outside))) editcopy
// Graph edits
gr_edit .title.text = {}
gr_edit  .title.text.Arrpush Measure: Manhattan distance
graph save "results\dump\fig1_c0.gph", replace  


* MDS: Manhattan - modern MDS
import excel "data\Voteswiper 2025 party answers.xlsx", sheet("ten_parties_transp") firstrow clear
mds Q*, id(Nr) method(modern) measure(manhattan) 
graph display, xsize(4) ysize(4) 
gr_edit .note.draw_view.setstyle, style(no)
// note edits

gr_edit .style.editstyle margin(top) editcopy
gr_edit .style.editstyle boxstyle(linestyle(align(outside))) editcopy
// Graph edits
gr_edit .title.text = {}
gr_edit  .title.text.Arrpush Measure: Manhattan distance
graph save "results\dump\fig1_c00.gph", replace  

* MDS: Euclid - classical MDS
import excel "data\Voteswiper 2025 party answers.xlsx", sheet("ten_parties_transp") firstrow clear
mds Q*, id(Nr) method(classic) measure(L2) 
graph display, xsize(4) ysize(4) 
gr_edit .note.draw_view.setstyle, style(no)
// note edits

gr_edit .style.editstyle margin(top) editcopy
gr_edit .style.editstyle boxstyle(linestyle(align(outside))) editcopy
// Graph edits
gr_edit .title.text = {}
gr_edit  .title.text.Arrpush Measure: Euclidean distance
gr_edit .yaxis1.reset_rule -3 3.5 1 , tickset(major) ruletype(range) 
// yaxis1 edits
gr_edit .xaxis1.reset_rule -3 3.5 1 , tickset(major) ruletype(range) 
// xaxis1 edits
graph save "results\dump\fig1_c1.gph", replace  

* MDS: Euclid - modern MDS
import excel "data\Voteswiper 2025 party answers.xlsx", sheet("ten_parties_transp") firstrow clear
mds Q*, id(Nr) method(modern) measure(L2) 
graph display, xsize(4) ysize(4) 
gr_edit .note.draw_view.setstyle, style(no)
// note edits

gr_edit .style.editstyle margin(top) editcopy
gr_edit .style.editstyle boxstyle(linestyle(align(outside))) editcopy
// Graph edits
gr_edit .title.text = {}
gr_edit  .title.text.Arrpush Measure: Euclidean distance
graph save "results\dump\fig1_c11.gph", replace  

* MDS: Simple Matching - classical MDS
import excel "data\Voteswiper 2025 party answers.xlsx", sheet("ten_parties_transp") firstrow clear
mds Q*, id(Nr) method(classic) measure(match) s2d(standard)
graph display, xsize(4) ysize(4) 
 gr_edit .note.draw_view.setstyle, style(no)
// note edits

gr_edit .style.editstyle margin(top) editcopy
gr_edit .style.editstyle boxstyle(linestyle(align(outside))) editcopy
// Graph edits
gr_edit .title.text = {}
gr_edit  .title.text.Arrpush Measure: Simple matching similarity
gr_edit .SetAspectRatio 1
graph save "results\dump\fig1_c2.gph", replace  

* MDS: Simple Matching - modern MDS
import excel "data\Voteswiper 2025 party answers.xlsx", sheet("ten_parties_transp") firstrow clear
mds Q*, id(Nr) method(modern) measure(match) s2d(standard)
graph display, xsize(4) ysize(4) 
gr_edit .note.draw_view.setstyle, style(no)
// note edits

gr_edit .style.editstyle margin(top) editcopy
gr_edit .style.editstyle boxstyle(linestyle(align(outside))) editcopy
// Graph edits
gr_edit .title.text = {}
gr_edit  .title.text.Arrpush Measure: Simple matching
graph save "results\dump\fig1_c22.gph", replace  

* MDS: Jaccard - classical MDS
import excel "data\Voteswiper 2025 party answers.xlsx", sheet("ten_parties_transp") firstrow clear
mds Q*, id(Nr) method(classic) measure(Jaccard) s2d(standard)
graph display, xsize(4) ysize(4) 
 gr_edit .note.draw_view.setstyle, style(no)
// note edits

gr_edit .style.editstyle margin(top) editcopy
gr_edit .style.editstyle boxstyle(linestyle(align(outside))) editcopy
// Graph edits
gr_edit .title.text = {}
gr_edit  .title.text.Arrpush Measure: Jaccard similarity
gr_edit .SetAspectRatio 1
gr_edit .yaxis1.reset_rule -0.6 0.9 0.2 , tickset(major) ruletype(range) 
// yaxis1 edits
gr_edit .xaxis1.reset_rule -0.6 0.9 0.2 , tickset(major) ruletype(range) 
graph save "results\dump\fig1_c3.gph", replace  

* MDS: Jaccard - modern MDS
import excel "data\Voteswiper 2025 party answers.xlsx", sheet("ten_parties_transp") firstrow clear
mds Q*, id(Nr) method(modern) measure(Jaccard) s2d(standard)
graph display, xsize(4) ysize(4) 
gr_edit .note.draw_view.setstyle, style(no)
// note edits

gr_edit .style.editstyle margin(top) editcopy
gr_edit .style.editstyle boxstyle(linestyle(align(outside))) editcopy
// Graph edits
gr_edit .title.text = {}
gr_edit  .title.text.Arrpush Measure: Jaccard similarity
graph save "results\dump\fig1_c33.gph", replace 


graph combine "results\dump\fig1_c1.gph"  "results\dump\fig1_c0.gph"  "results\dump\fig1_c3.gph" , scale(.8) col(1) title("Classical MDS")
graph save "results\dump\Fig_A2a.gph", replace 

graph combine "results\dump\fig1_c11.gph"  "results\dump\fig1_c00.gph"  "results\dump\fig1_c33.gph" , scale(.8) col(1) title("Modern MDS (loss=stress;transform=identity)")
graph save "results\dump\Fig_A2b.gph", replace 

graph combine "results\dump\Fig_A2a.gph" "results\dump\Fig_A2b.gph", col(2) xsize(4) ysize(6) imargin(0 0 0 0)
graph export "results\fig\figure_A2.emf", replace
graph export "results\fig\figure_A2.pdf", replace

**************************************************************************************************************************************************************
*
*					Figure 1
*
**************************************************************************************************************************************************************



gr combine "results\dump\fig1_b.gph" "results\dump\fig1_c.gph", imargin(0 0 2 0) commonscheme  name(gr1_2, replace) rows(2) 
gr combine "results\dump\percentage_matching_bar.gph" gr1_2 , imargin(0 0 0 0) commonscheme xsize(6) ysize(6.5)
gr_edit .plotregion1.graph1.grpaxis.style.editstyle majorstyle(tickstyle(textstyle(size(vsmall)))) editcopy
// grpaxis size

gr_edit .plotregion1.graph1.scaleaxis.style.editstyle majorstyle(tickstyle(textstyle(size(vsmall)))) editcopy
// scaleaxis size

gr_edit .plotregion1.graph1.scaleaxis.title.style.editstyle size(small) editcopy
// title size

gr_edit .AddTextBox added_text editor 100 -.7310734463276831
gr_edit .added_text_new = 1
gr_edit .added_text_rec = 1
gr_edit .added_text[1].style.editstyle  angle(default) size(small) color(black) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(vthin) color(black) pattern(solid) align(inside)) box_alignment(east) editcopy
gr_edit .added_text[1].text = {}
gr_edit .added_text[1].text.Arrpush `"a)"'
// editor text[1] edits


gr_edit .plotregion1.graph2.plotregion1.graph1.AddTextBox added_text editor 45.98531073446328 3.958192090395471
gr_edit .plotregion1.graph2.plotregion1.graph1.added_text_new = 1
gr_edit .plotregion1.graph2.plotregion1.graph1.added_text_rec = 1
gr_edit .plotregion1.graph2.plotregion1.graph1.added_text[1].style.editstyle  angle(default) size(half_tiny) color(black) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(vthin) color(black) pattern(solid) align(inside)) box_alignment(east) editcopy
gr_edit .plotregion1.graph2.plotregion1.graph1.added_text[1].style.editstyle size(large) editcopy
gr_edit .plotregion1.graph2.plotregion1.graph1.added_text[1].text = {}
gr_edit .plotregion1.graph2.plotregion1.graph1.added_text[1].text.Arrpush `"b)"'
// editor text[1] edits



gr_edit .plotregion1.graph2.plotregion1.graph2.AddTextBox added_text editor 50 5.766101694915249
gr_edit .plotregion1.graph2.plotregion1.graph2.added_text_new = 1
gr_edit .plotregion1.graph2.plotregion1.graph2.added_text_rec = 1
gr_edit .plotregion1.graph2.plotregion1.graph2.added_text[1].style.editstyle  angle(default) size(half_tiny) color(black) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(vthin) color(black) pattern(solid) align(inside)) box_alignment(east) editcopy
gr_edit .plotregion1.graph2.plotregion1.graph2.added_text[1].style.editstyle size(large) editcopy
gr_edit .plotregion1.graph2.plotregion1.graph2.added_text[1].text = {}
gr_edit .plotregion1.graph2.plotregion1.graph2.added_text[1].text.Arrpush `"c)"'
// editor text[1] edits

gr_edit .plotregion1.graph2.plotregion1.graph2.added_text[1].DragBy -.1129943502824972 1.920903954802247
// editor text[1] reposition

gr_edit .plotregion1.graph2.plotregion1.graph1.added_text[1].DragBy -.1129943502825086 2.598870056497157
gr_edit .plotregion1.graph2.plotregion1.graph2.title.text = {}
gr_edit .plotregion1.graph2.plotregion1.graph2.title.text.Arrpush Classical MDS configuration (measure: Euclidean distance)
// editor text[1] reposition
graph export "results\dump\figure_1_bars.pdf", replace
graph export "results\dump\figure_1_bars.emf", replace



** Mit dot-Graph

gr combine "results\dump\fig1_b.gph" "results\dump\fig1_c.gph", imargin(0 0 2 0) commonscheme  name(gr1_2, replace) rows(2) 
gr combine "results\dump\percentage_matching_dot.gph" gr1_2 , imargin(0 0 0 0) commonscheme xsize(6) ysize(6.5)
gr_edit .plotregion1.graph1.grpaxis.style.editstyle majorstyle(tickstyle(textstyle(size(vsmall)))) editcopy
// grpaxis size

gr_edit .plotregion1.graph1.scaleaxis.style.editstyle majorstyle(tickstyle(textstyle(size(vsmall)))) editcopy
// scaleaxis size

gr_edit .plotregion1.graph1.scaleaxis.title.style.editstyle size(small) editcopy
// title size

gr_edit .AddTextBox added_text editor 100 -.7310734463276831
gr_edit .added_text_new = 1
gr_edit .added_text_rec = 1
gr_edit .added_text[1].style.editstyle  angle(default) size(small) color(black) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(vthin) color(black) pattern(solid) align(inside)) box_alignment(east) editcopy
gr_edit .added_text[1].text = {}
gr_edit .added_text[1].text.Arrpush `"a)"'
// editor text[1] edits


gr_edit .plotregion1.graph2.plotregion1.graph1.AddTextBox added_text editor 45.98531073446328 3.958192090395471
gr_edit .plotregion1.graph2.plotregion1.graph1.added_text_new = 1
gr_edit .plotregion1.graph2.plotregion1.graph1.added_text_rec = 1
gr_edit .plotregion1.graph2.plotregion1.graph1.added_text[1].style.editstyle  angle(default) size(half_tiny) color(black) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(vthin) color(black) pattern(solid) align(inside)) box_alignment(east) editcopy
gr_edit .plotregion1.graph2.plotregion1.graph1.added_text[1].style.editstyle size(large) editcopy
gr_edit .plotregion1.graph2.plotregion1.graph1.added_text[1].text = {}
gr_edit .plotregion1.graph2.plotregion1.graph1.added_text[1].text.Arrpush `"b)"'
// editor text[1] edits



gr_edit .plotregion1.graph2.plotregion1.graph2.AddTextBox added_text editor 50 5.766101694915249
gr_edit .plotregion1.graph2.plotregion1.graph2.added_text_new = 1
gr_edit .plotregion1.graph2.plotregion1.graph2.added_text_rec = 1
gr_edit .plotregion1.graph2.plotregion1.graph2.added_text[1].style.editstyle  angle(default) size(half_tiny) color(black) horizontal(left) vertical(middle) margin(zero) linegap(zero) drawbox(no) boxmargin(zero) fillcolor(bluishgray) linestyle( width(vthin) color(black) pattern(solid) align(inside)) box_alignment(east) editcopy
gr_edit .plotregion1.graph2.plotregion1.graph2.added_text[1].style.editstyle size(large) editcopy
gr_edit .plotregion1.graph2.plotregion1.graph2.added_text[1].text = {}
gr_edit .plotregion1.graph2.plotregion1.graph2.added_text[1].text.Arrpush `"c)"'
// editor text[1] edits

gr_edit .plotregion1.graph2.plotregion1.graph2.added_text[1].DragBy -.1129943502824972 1.920903954802247
// editor text[1] reposition

gr_edit .plotregion1.graph2.plotregion1.graph1.added_text[1].DragBy -.1129943502825086 2.598870056497157
// editor text[1] reposition

gr_edit .plotregion1.graph1.plotregion1.bars[45].grstyle.editstyle dottype(line) editcopy
// bars[45] edits

gr_edit .plotregion1.graph1.plotregion1.bars[45].grstyle.editstyle dot_linestyle(color(white)) editcopy
// bars[45] color

gr_edit .plotregion1.graph1.plotregion1.points[45].style.editstyle marker(symbol(circle_hollow)) editcopy
// points[45] symbol

gr_edit .plotregion1.graph2.plotregion1.graph1.xaxis1.major.num_rule_ticks = 0
gr_edit .plotregion1.graph2.plotregion1.graph1.xaxis1.edit_tick 1 1 `"CDU/CSU"', tickset(major)
gr_edit .plotregion1.graph2.plotregion1.graph2.title.text = {}
gr_edit .plotregion1.graph2.plotregion1.graph2.title.text.Arrpush Classical MDS configuration (measure: Euclidean distance)

graph export "results\fig\figure_1.pdf", replace
graph export "results\fig\figure_1.emf", replace



**************************************************************************************************************************************************************
*
*					Fig A1: Heatmap all parties
*
**************************************************************************************************************************************************************

import excel "data\Voteswiper 2025 party answers.xlsx", sheet("all_parties") firstrow clear


* dissimilarity matrix Simple Matching
matrix dissim match = CDUCSU	AfD	SPD	Green	Left	FDP	BSW	Volt	FV	APP	BP	BD	BC	PAR	Bas	MW	MER	MLP	ÖDP	PDF	PdH	SGP	SSW	TT	VF	WU, match var
heatplot match, values(format(%9.2f)) color(blues,  intensity(0.6)) aspectratio(1) lower nodiagonal legend(off) title("Simple Matching similarity coefficient") scale(0.5)
graph save "results\dump\heatmap_all_a.gph", replace 
graph export "results\dump\heatmap_all_a.pdf", replace
graph export "results\dump\heatmap_all_a.emf", replace

* dissimilarity matrix Jaccard
matrix dissim jac = CDUCSU	AfD	SPD	Green	Left	FDP	BSW	Volt	FV	APP	BP	BD	BC	PAR	Bas	MW	MER	MLP	ÖDP	PDF	PdH	SGP	SSW	TT	VF	WU, Jac var
heatplot jac, values(format(%9.2f)) color(blues,  intensity(0.6)) aspectratio(1) lower nodiagonal legend(off) title("Jaccard similarity coefficient") scale(0.5)
graph save "results\dump\heatmap_all_b.gph", replace 
graph export "results\dump\heatmap_all_b.pdf", replace
graph export "results\dump\heatmap_all_b.emf", replace

* dissimilarity matrix Russel
matrix dissim rus = CDUCSU	AfD	SPD	Green	Left	FDP	BSW	Volt	FV	APP	BP	BD	BC	PAR	Bas	MW	MER	MLP	ÖDP	PDF	PdH	SGP	SSW	TT	VF	WU, Russell var
heatplot rus, values(format(%9.2f)) color(blues,  intensity(0.6)) aspectratio(1) lower nodiagonal legend(off) title("Russel-Rao similarity coefficient") scale(0.5)
graph save "results\dump\heatmap_all_c.gph", replace
graph export "results\dump\heatmap_all_c.pdf", replace
graph export "results\dump\heatmap_all_c.emf", replace


* dissimilarity matrix Rogers
matrix dissim rog = CDUCSU	AfD	SPD	Green	Left	FDP	BSW	Volt	FV	APP	BP	BD	BC	PAR	Bas	MW	MER	MLP	ÖDP	PDF	PdH	SGP	SSW	TT	VF	WU, Rogers var
heatplot rog, values(format(%9.2f)) color(blues,  intensity(0.6)) aspectratio(1) lower nodiagonal legend(off) title("Rogers-Tanimoto similarity coefficient") scale(0.5)
graph save "results\dump\heatmap_all_d.gph", replace
graph export "results\dump\heatmap_all_d.pdf", replace
graph export "results\dump\heatmap_all_d.emf", replace

* dissimilarity matrix Manhatta
matrix dissim manhatt = CDUCSU	AfD	SPD	Green	Left	FDP	BSW	Volt	FV	APP	BP	BD	BC	PAR	Bas	MW	MER	MLP	ÖDP	PDF	PdH	SGP	SSW	TT	VF	WU, manhatt var
heatplot manhatt, values(format(%9.1f)) color(blues,  intensity(0.6)) aspectratio(1) lower nodiagonal legend(off) title("Manhattan distance") scale(0.5)
graph save "results\dump\heatmap_all_e.gph", replace 
graph export "results\dump\heatmap_all_parties_ANHANG.pdf", replace
graph export "results\dump\heatmap_all_parties_ANHANG.emf", replace

* dissimilarity matrix Euklid
matrix dissim euclid = CDUCSU	AfD	SPD	Green	Left	FDP	BSW	Volt	FV	APP	BP	BD	BC	PAR	Bas	MW	MER	MLP	ÖDP	PDF	PdH	SGP	SSW	TT	VF	WU, euclid var
heatplot euclid, values(format(%9.2f)) color(blues,  intensity(0.6)) aspectratio(1) lower nodiagonal legend(off) title("Euclidean distance") scale(0.5)
graph save "results\dump\heatmap_all_f.gph", replace 
graph export "results\dump\heatmap_all_f.pdf", replace
graph export "results\dump\heatmap_all_f.emf", replace

graph combine "results\dump\heatmap_all_e.gph" "results\dump\heatmap_all_f.gph" "results\dump\heatmap_all_a.gph" "results\dump\heatmap_all_b.gph" "results\dump\heatmap_all_c.gph" "results\dump\heatmap_all_d.gph" , imargin(tiny) scale(.8) col(2) xsize(4) ysize(6)
graph export "results\fig\figure_A1.pdf", replace
graph export "results\fig\figure_A1.emf", replace





* Datensatz einlesen (erstellt wurde dieser mit dem Do-File WahlSwiper_Nachwahlbefragung_BT-Wahl_2025_Datensatzerstellung
use "data\wahlswiper_nachbefragung_25_ohneemail.dta", replace

set scheme plotplainblind

**************************************************************************************************************************************************************
*
*					Generate and Label data
*
**************************************************************************************************************************************************************

recode Geschlecht (1 = 1) (2 = 0) (3 = .), gen(male)
label define male 1 "male" 0 "female"
label values male male
label variable male "Gender"

gen gender = Geschlecht
label define gender 1 "Male" 2 "Female" 3 "non binary"
label values gender gender

recode v_22 (1 2 3 = 1) (4 = 2) (5 = 3), gen(education_3)
label define education_3 1 "Low" 2 "Middle" 3 "High"
label values education_3 education_3 
label variable education_3 "Education"

recode v_22 (1 2 3 4 = 0) (5 = 1) , gen(abitur)
label define abitur 0 "no Abitur" 1 "Abitur" 
label values abitur abitur
label variable abitur "Abitur"

label variable ostdeutschland "East Germany"
label define ostdeutschland 0 "West Germany" 1 "East Germany"
label values ostdeutschland ostdeutschland

recode age (10/30 = 1) (31/60 = 2) (61/99 = 3) (100 = .), gen(age_group_3)
label define age_group_3 1 "18-30" 2 "31-60" 3 "61+" 
label values age_group_3 age_group_3
label variable age_group_3 "Age group"

label variable wahlabsicht_vor_small "Voting intention before using Voteswiper"
label variable wahlabsicht_vor_middle "Voting intention before using Voteswiper"
label variable wahlabsicht_nach_small "Voting intention after using Voteswiper"	
label variable wahlabsicht_nach_middle "Voting intention after using Voteswiper"
label variable wahlswiper_top_1_small "Best match in Voteswiper"
label variable wahlswiper_top_1_middle "Best match in Voteswiper"

label define voting_intention 1 "CDU/CSU" 2 "AfD" 3 "SPD" 4 "Greens" 5 "Left" 6 "FDP" 7 "BSW" 90 "Other parties" 96 "Undecided" 98 "Non-voter" 99 "Vote invalid"
label values wahlabsicht_vor_small voting_intention
label values wahlabsicht_nach_small voting_intention

label define voteswiper_top_1 1 "CDU/CSU" 2 "AfD" 3 "SPD" 4 "Greens" 5 "Left" 6 "FDP" 7 "BSW" 8 "Volt" 9 "Free Voters" 10 "Animal Protection Party" 90 "Other parties" 
label values wahlswiper_top_1_middle voteswiper_top_1


	
	
	
	
*****************************************************************************************************************************************************************************
*
* 			!!!!!!!!!!!!   Beschränkung auf Teilnehmer ab 05.02.2025 15:30 --> erst ab da war BSW in der ersten Frage (Top 3 WahlSwiper Ergebnis) enthalten !!!!!!!!!!!!
*
*****************************************************************************************************************************************************************************
drop if id < 1876	

	
*******************************************************************************************************************************************************************
*
*				Table 1: 	Descriptive Statistics
*
*******************************************************************************************************************************************************************	
	
asdoc tab1 gender education ostdeutsch age_group_3 wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small, mis replace  save(results\tables\table_1.rtf) 


	
	
	

*******************************************************************************************************************************************************************
*
*					Missing values
*
*******************************************************************************************************************************************************************	
	
	log using results\tables\table_A1.txt, replace text
	
	misstable summ gender education ostdeutsch age_group_3 wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small 
	log close
	
	
*******************************************************************************************************************************************************************
*
*					Table 2: Percentages of Top1, Top2 and Top3 
*
*******************************************************************************************************************************************************************		

asdoc tab1 wahlswiper_top_1_large wahlswiper_top_2_large wahlswiper_top_3_large top3_* ,	replace  save(results\tables\table_2.rtf) 
asdoc tab top3_cducsu if wahlabsicht_vor_large ==1, mis
asdoc tab top3_afd  if wahlabsicht_vor_large ==2, mis
asdoc tab top3_spd if wahlabsicht_vor_large ==3, mis
asdoc tab top3_grüne if wahlabsicht_vor_large ==4, mis
asdoc tab top3_dielinke if wahlabsicht_vor_large ==5, mis
asdoc tab top3_fdp if wahlabsicht_vor_large ==6, mis
asdoc tab top3_bsw if wahlabsicht_vor_large ==7, mis
asdoc tab top3_volt if wahlabsicht_vor_large ==8, mis
asdoc tab top3_freiewähler if wahlabsicht_vor_large ==9, mis
asdoc tab top3_tierschutzpartei if wahlabsicht_vor_large ==10, mis
asdoc tab top3_bündnis_c if wahlabsicht_vor_large ==12, mis
asdoc tab top3_bündnis_d if wahlabsicht_vor_large ==13, mis
asdoc tab top3_diebasis if wahlabsicht_vor_large ==14, mis
asdoc tab top3_teamtodenhöfer if wahlabsicht_vor_large ==15, mis
asdoc tab top3_diepartei if wahlabsicht_vor_large ==16, mis
asdoc tab top3_menschlichewelt if wahlabsicht_vor_large ==17, mis
asdoc tab top3_mera25 if wahlabsicht_vor_large ==18, mis
asdoc tab top3_mlpd if wahlabsicht_vor_large ==19, mis
asdoc tab top3_ödp if wahlabsicht_vor_large ==20, mis
asdoc tab top3_pdf if wahlabsicht_vor_large ==22, mis
asdoc tab top3_pdh if wahlabsicht_vor_large ==24, mis
asdoc tab top3_ssw if wahlabsicht_vor_large ==26, mis
asdoc tab top3_werteunion if wahlabsicht_vor_large ==29, mis

	
	
**************************************************************************************************************************************************************
*
*					Figure 2
*
**************************************************************************************************************************************************************	
	
	
	* color palette
	capture program drop colorpalette_wahlswiperwanderung
	program colorpalette_wahlswiperwanderung
	 c_local P 	#40c9ff	,	/// AfD
				#3ee32b ,	/// Animal Protection Party
				#9c247a ,	/// BSW
				#5e5e5e ,	/// CDU_CSU
				#ffed00 ,	/// FDP		
				#e88a25 ,	/// Free Voters
				#2fa322 , 	/// Greens
				#f653a6 ,	/// Left
				#08807e , 	/// Non Voter
				#dbab81 , 	/// Other parties
				#e3000f	, 	/// SPD		
				#0ddbd8 ,	/// Undecided
				#9156c7 ,	///	Volt


		




	 c_local I 		AfD,	///
					Animal Protection Party, ///
					BSW,	///
					CDU/CSU, 	///
					FDP,	///
					Free Voters,	///
					Greens,	///
					Left,	///
					Non voters , ///
					Other parties,	///
					SPD,	///
					undecided, ///
					Volt
	end

	colorpalette wahlswiperwanderung

drop if wahlabsicht_vor_small == 99	
	
	
* Sankey alle Parteien	
alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small, ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wahlswiperwanderung)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(1) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			recen(bot) 						/// 
			xsize(2) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)

	graph save "results\fig\figure_2.gph", replace
	graph export "results\fig\figure_2.emf", replace		
	graph export "results\fig\figure_2.pdf", replace				

* Sankey alle Parteien	
alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small [iweight = ipf_gewicht2], ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wahlswiperwanderung)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(1) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			recen(bot) 						/// 
			xsize(2) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)

	graph save "results\dump\figure_2_WEIGHTED.gph", replace
	graph export "results\dump\figure_2_WEIGHTED.emf", replace		
	graph export "results\dump\figure_2_WEIGHTED.pdf", replace		
	

**************************************************************************************************************************************************************
*
*					Figure 3 & 4
*
**************************************************************************************************************************************************************	
	
	
* Sankey CDU/CSU	
* color palette
	capture program drop colorpalette_wsw_cdu 
	program colorpalette_wsw_cdu
	  c_local P #40c9ff	,	/// AfD
				#3ee32b ,	/// Animal Protection Party
				#9c247a ,	/// BSW
				#5e5e5e ,	/// CDU_CSU
				#ffed00 ,	/// FDP		
				#e88a25 ,	/// Free Voters
				#2fa322 , 	/// Greens
				#f653a6 ,	/// Left
				#dbab81 , 	/// Other parties
				#e3000f	, 	/// SPD		
				#0ddbd8 ,	/// Undecided
				#9156c7 ,	///	Volt

	 c_local I 		AfD,	///
					Animal Protection Party, ///
					BSW,	///
					CDU/CSU, 	///
					FDP,	///
					Free Voters,	///
					Greens,	///
					Left,	///
					Other parties,	///
					SPD,	///
					undecided, ///
					Volt
	 
	 

	end

	colorpalette wsw_cdu


alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if wahlabsicht_vor_small == 1, ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wsw_cdu)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(1) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			xsize(3) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)

	graph save "results\dump\fig_1_cdu.gph", replace
	graph export "results\dump\fig_1_cdu.emf", replace		
	graph export "results\dump\fig_1_cdu.pdf", replace

alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if wahlabsicht_vor_small == 1 [iweight = ipf_gewicht2], ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wsw_cdu)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(1) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			xsize(2) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)

	graph save "results\dump\fig_1_cdu_WEIGHTED.gph", replace
	graph export "results\dump\fig_1_cdu_WEIGHTED.emf", replace		
	graph export "results\dump\fig_1_cdu_WEIGHTED.pdf", replace	
	

* Sankey AfD	
* color palette
	* color palette
	capture program drop colorpalette_wsw_afd
	program colorpalette_wsw_afd
	  c_local P #40c9ff	,	/// AfD
				#9c247a ,	/// BSW
				#5e5e5e ,	/// CDU_CSU
				#ffed00 ,	/// FDP		
				#e88a25 ,	/// Free Voters
				#f653a6 ,	/// Left
				#08807e , 	/// Non Voter
				#dbab81 , 	/// Other parties
				#0ddbd8 ,	/// Undecided

	 c_local I 		AfD,	///
					BSW,	///
					CDU/CSU, 	///
					FDP,	///
					Free Voters,	///
					Left,	///
					Non voters , ///
					Other parties,	///
					undecided, ///
	 
	end

	colorpalette wsw_afd


alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if wahlabsicht_vor_small == 2, ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wsw_afd)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(1) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			xsize(3) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)

	graph save "results\dump\fig_1_afd.gph", replace
	graph export "results\dump\fig_1_afd.emf", replace		
	graph export "results\dump\fig_1_afd.pdf", replace

	
	
* color palette
	* color palette
	capture program drop colorpalette_wsw_afd_WEIGHTED
	program colorpalette_wsw_afd_WEIGHTED
	 c_local P  #40c9ff	,	/// AfD
				#9c247a ,	/// BSW
				#5e5e5e ,	/// CDU_CSU
				#ffed00 ,	/// FDP		
				#e88a25 ,	/// Free Voters
				#f653a6 ,	/// Left
				#dbab81 , 	/// Other parties
				#0ddbd8 ,	/// Undecided

	 c_local I 		AfD,	///
					BSW,	///
					CDU/CSU, 	///
					FDP,	///
					Free Voters,	///
					Left,	///
					Other parties,	///
					undecided, ///
	
	end

	colorpalette wsw_afd_WEIGHTED	
	
	
alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if wahlabsicht_vor_small == 2 [iweight = ipf_gewicht2], ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wsw_afd_WEIGHTED)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(1) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			xsize(2) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)

	graph save "results\dump\fig_1_afd_WEIGHTED.gph", replace
	graph export "results\dump\fig_1_afd_WEIGHTED.emf", replace		
	graph export "results\dump\fig_1_afd_WEIGHTED.pdf", replace	
	

* Sankey SPD	
* color palette
	* color palette
	capture program drop colorpalette_wsw_spd
	program colorpalette_wsw_spd
	 c_local P 	#40c9ff	,	/// AfD
				#3ee32b ,	/// Animal Protection Party
				#9c247a ,	/// BSW
				#5e5e5e ,	/// CDU_CSU
				#ffed00 ,	/// FDP	
				#e88a25 ,	/// Free Voters
				#2fa322 , 	/// Greens
				#f653a6 ,	/// Left
				#dbab81 , 	/// Other parties
				#e3000f	, 	/// SPD		
				#0ddbd8 ,	/// Undecided
				#9156c7 ,	///	Volt

	 c_local I 		AfD,	///
					Animal Protection Party, ///
					BSW,	///
					CDU/CSU, 	///
					FDP, ///
					Free Voters,	///
					Greens,	///
					Left,	///
					Other parties,	///
					SPD,	///
					undecided, ///
					Volt
	 
	 
	 

	end

	colorpalette wsw_spd



alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if wahlabsicht_vor_small == 3, ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wsw_spd)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(1) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			xsize(3) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)

	graph save "results\dump\fig_1_spd.gph", replace
	graph export "results\dump\fig_1_spd.emf", replace		
	graph export "results\dump\fig_1_spd.pdf", replace


* color palette
	capture program drop colorpalette_wsw_spd_WEIGHTED
	program colorpalette_wsw_spd_WEIGHTED
	 c_local P 	#40c9ff	,	/// AfD
				#3ee32b ,	/// Animal Protection Party
				#9c247a ,	/// BSW
				#5e5e5e ,	/// CDU_CSU
				#e88a25 ,	/// Free Voters
				#2fa322 , 	/// Greens
				#f653a6 ,	/// Left
				#dbab81 , 	/// Other parties
				#e3000f	, 	/// SPD		
				#0ddbd8 ,	/// Undecided
				#9156c7 ,	///	Volt

	 c_local I 		AfD,	///
					Animal Protection Party, ///
					BSW,	///
					CDU/CSU, 	///
					Free Voters,	///
					Greens,	///
					Left,	///
					Other parties,	///
					SPD,	///
					undecided, ///
					Volt
	 
	 
	 

	end

	colorpalette wsw_spd_WEIGHTED	
	
alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if wahlabsicht_vor_small == 3 [iweight = ipf_gewicht2], ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wsw_spd_WEIGHTED)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(1) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			xsize(2) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)

	graph save "results\dump\fig_1_spd_WEIGHTED.gph", replace
	graph export "results\dump\fig_1_spd_WEIGHTED.emf", replace		
	graph export "results\dump\fig_1_spd_WEIGHTED.pdf", replace	
	

* Sankey Grüne	
* color palette
	capture program drop colorpalette_wsw_grüne
	program colorpalette_wsw_grüne
	c_local P 	#40c9ff	,	/// AfD
				#3ee32b ,	/// Animal Protection Party
				#9c247a ,	/// BSW
				#5e5e5e ,	/// CDU_CSU
				#ffed00 ,	/// FDP		
				#e88a25 ,	/// Free Voters
				#2fa322 , 	/// Greens
				#f653a6 ,	/// Left
				#08807e , 	/// Non Voter
				#dbab81 , 	/// Other parties
				#e3000f	, 	/// SPD		
				#0ddbd8 ,	/// Undecided
				#9156c7 ,	///	Volt

	 c_local I 		AfD,	///
					Animal Protection Party, ///
					BSW,	///
					CDU/CSU, 	///
					FDP,	///
					Free Voters,	///
					Greens,	///
					Left,	///
					Non voters , ///
					Other parties,	///
					SPD,	///
					undecided, ///
					Volt
	
	
	end

	colorpalette wsw_grüne



alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if wahlabsicht_vor_small == 4, ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wsw_grüne)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(1) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			xsize(3) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)

	graph save "results\dump\fig_1_grüne.gph", replace
	graph export "results\dump\fig_1_grüne.emf", replace		
	graph export "results\dump\fig_1_grüne.pdf", replace	

	
alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if wahlabsicht_vor_small == 4 [iweight = ipf_gewicht2], ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wsw_grüne)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(1) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			xsize(2) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)

	graph save "results\dump\fig_1_grüne_WEIGHTED.gph", replace
	graph export "results\dump\fig_1_grüne_WEIGHTED.emf", replace		
	graph export "results\dump\fig_1_grüne_WEIGHTED.pdf", replace		

* Sankey Linke	
* color palette
	capture program drop colorpalette_wsw_linke
	program colorpalette_wsw_linke
	 c_local P 	#40c9ff	,	/// AfD
				#3ee32b ,	/// Animal Protection Party
				#9c247a ,	/// BSW
				#ffed00 ,	/// FDP		
				#e88a25 ,	/// Free Voters
				#2fa322 , 	/// Greens
				#f653a6 ,	/// Left
				#dbab81 , 	/// Other parties
				#e3000f	, 	/// SPD		
				#0ddbd8 ,	/// Undecided
				#9156c7 ,	///	Volt

	 c_local I 		AfD,	///
					Animal Protection Party, ///
					BSW,	///
					FDP,	///
					Free Voters,	///
					Greens,	///
					Left,	///
					Other parties,	///
					SPD,	///
					undecided, ///
					Volt
	 
	
	end

	colorpalette wsw_linke



alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if wahlabsicht_vor_small == 5, ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wsw_linke)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(1) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			xsize(3) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)

	graph save "results\dump\fig_1_linke.gph", replace
	graph export "results\dump\fig_1_linke.emf", replace		
	graph export "results\dump\fig_1_linke.pdf", replace	


* color palette
	capture program drop colorpalette_wsw_linke_WEIGHTED
	program colorpalette_wsw_linke_WEIGHTED
		 c_local P 	#40c9ff	,	/// AfD
				#3ee32b ,	/// Animal Protection Party
				#9c247a ,	/// BSW
				#e88a25 ,	/// Free Voters
				#2fa322 , 	/// Greens
				#f653a6 ,	/// Left
				#dbab81 , 	/// Other parties
				#e3000f	, 	/// SPD		
				#0ddbd8 ,	/// Undecided
				#9156c7 ,	///	Volt

	 c_local I 		AfD,	///
					Animal Protection Party, ///
					BSW,	///
					Free Voters,	///
					Greens,	///
					Left,	///
					Other parties,	///
					SPD,	///
					undecided, ///
					Volt
	
	
	end

	colorpalette wsw_linke_WEIGHTED	
	
alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if wahlabsicht_vor_small == 5 [iweight = ipf_gewicht2], ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wsw_linke_WEIGHTED)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(1) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			xsize(2) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)

	graph save "results\dump\fig_1_linke_WEIGHTED.gph", replace
	graph export "results\dump\fig_1_linke_WEIGHTED.emf", replace		
	graph export "results\dump\fig_1_linke_WEIGHTED.pdf", replace		
	
	
* Sankey FDP	
* color palette
	capture program drop colorpalette_wsw_fdp
	program colorpalette_wsw_fdp
	 c_local P 	#40c9ff	,	/// AfD
				#9c247a ,	/// BSW
				#5e5e5e ,	/// CDU_CSU
				#ffed00 ,	/// FDP		
				#e88a25 ,	/// Free Voters
				#2fa322 , 	/// Greens
				#f653a6 ,	/// Left
				#dbab81 , 	/// Other parties
				#0ddbd8 ,	/// Undecided
				#9156c7 ,	///	Volt

	 c_local I 		AfD,	///
					BSW,	///
					CDU/CSU, 	///
					FDP,	///
					Free Voters,	///
					Greens,	///
					Left,	///
					Other parties,	///
					undecided, ///
					Volt
	 
	
	end

	colorpalette wsw_fdp


alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if wahlabsicht_vor_small == 6, ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wsw_fdp)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(1) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			xsize(3) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)

	graph save "results\dump\fig_1_fdp.gph", replace
	graph export "results\dump\fig_1_fdp.emf", replace		
	graph export "results\dump\fig_1_fdp.pdf", replace	

alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if wahlabsicht_vor_small == 6 [iweight = ipf_gewicht2], ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wsw_fdp)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(1) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			xsize(2) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)

	graph save "results\dump\fig_1_fdp_WEIGHTED.gph", replace
	graph export "results\dump\fig_1_fdp_WEIGHTED.emf", replace		
	graph export "results\dump\fig_1_fdp_WEIGHTED.pdf", replace		
	
	
* Sankey BSW	
* color palette
	capture program drop colorpalette_wsw_bsw
	program colorpalette_wsw_bsw
	c_local P 	#40c9ff	,	/// AfD
				#9c247a ,	/// BSW
				#5e5e5e ,	/// CDU_CSU
				#e88a25 ,	/// Free Voters
				#2fa322 , 	/// Greens
				#f653a6 ,	/// Left
				#dbab81 , 	/// Other parties
				#e3000f	, 	/// SPD		
				#0ddbd8 ,	/// Undecided

	 c_local I 		AfD,	///
					BSW,	///
					CDU/CSU, 	///
					Free Voters,	///
					Greens,	///
					Left,	///
					Other parties,	///
					SPD,	///
					undecided

	
	
	end

	colorpalette wsw_bsw


alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if wahlabsicht_vor_small == 7, ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wsw_bsw)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(1) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			xsize(3) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)

	graph save "results\dump\fig_1_bsw.gph", replace
	graph export "results\dump\fig_1_bsw.emf", replace		
	graph export "results\dump\fig_1_bsw.pdf", replace	

alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if wahlabsicht_vor_small == 7 [iweight = ipf_gewicht2], ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wsw_bsw)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(1) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			xsize(2) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)

	graph save "results\dump\fig_1_bsw_WEIGHTED.gph", replace
	graph export "results\dump\fig_1_bsw_WEIGHTED.emf", replace		
	graph export "results\dump\fig_1_bsw_WEIGHTED.pdf", replace		
	
	
* Sankey unentschlossen	
* color palette
	capture program drop colorpalette_wsw_unentschlossen
	program colorpalette_wsw_unentschlossen
	 c_local P 	#40c9ff	,	/// AfD
				#3ee32b ,	/// Animal Protection Party
				#9c247a ,	/// BSW
				#5e5e5e ,	/// CDU_CSU
				#ffed00 ,	/// FDP		
				#e88a25 ,	/// Free Voters
				#2fa322 , 	/// Greens
				#f653a6 ,	/// Left
				#dbab81 , 	/// Other parties
				#e3000f	, 	/// SPD		
				#0ddbd8 ,	/// Undecided
				#9156c7 ,	///	Volt

	 c_local I 		AfD,	///
					Animal Protection Party, ///
					BSW,	///
					CDU/CSU, 	///
					FDP,	///
					Free Voters,	///
					Greens,	///
					Left,	///
					Other parties,	///
					SPD,	///
					undecided, ///
					Volt
	 
	 
	
	end

	colorpalette wsw_unentschlossen


alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if wahlabsicht_vor_small == 96, ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wsw_unentschlossen)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(1) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			xsize(3) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)

	graph save "results\dump\fig_1_unentschlossen.gph", replace
	graph export "results\dump\fig_1_unentschlossen.emf", replace		
	graph export "results\dump\fig_1_unentschlossen.pdf", replace		

	
alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if wahlabsicht_vor_small == 96 [iweight = ipf_gewicht2], ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wsw_unentschlossen)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(1) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			xsize(2) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)

	graph save "results\dump\fig_1_unentschlossen_WEIGHTED.gph", replace
	graph export "results\dump\fig_1_unentschlossen_WEIGHTED.emf", replace		
	graph export "results\dump\fig_1_unentschlossen_WEIGHTED.pdf", replace		

	
graph combine 	"results\dump\fig_1_cdu.gph" "results\dump\fig_1_afd.gph" "results\dump\fig_1_spd.gph" "results\dump\fig_1_grüne.gph", scale(1.2) 
graph display, xsize(5) ysize(7) scale(1) 
graph export "results\fig\figure_3.emf", replace	
	
graph combine 	"results\dump\fig_1_fdp.gph" "results\dump\fig_1_linke.gph" "results\dump\fig_1_bsw.gph" "results\dump\fig_1_unentschlossen.gph", scale(1.2)
graph display, xsize(5) ysize(7) scale(1) 
graph export "results\fig\figure_4.emf", replace	
	
*********************************************************************************************************************************
*	
*											 Alluvials für Personengruppen
*
*********************************************************************************************************************************

**************************************************************************************************************************************************************
*
*					Figure A4
*
**************************************************************************************************************************************************************

* Männer
* color palette
	capture program drop colorpalette_wahlswiperwanderung
	program colorpalette_wahlswiperwanderung
	 	 c_local P 	#40c9ff	,	/// AfD
				#3ee32b ,	/// Animal Protection Party
				#9c247a ,	/// BSW
				#5e5e5e ,	/// CDU_CSU
				#ffed00 ,	/// FDP		
				#e88a25 ,	/// Free Voters
				#2fa322 , 	/// Greens
				#f653a6 ,	/// Left
				#08807e , 	/// Non Voter
				#dbab81 , 	/// Other parties
				#e3000f	, 	/// SPD		
				#0ddbd8 ,	/// Undecided
				#9156c7 ,	///	Volt

	 c_local I 		AfD,	///
					Animal Protection Party, ///
					BSW,	///
					CDU/CSU, 	///
					FDP,	///
					Free Voters,	///
					Greens,	///
					Left,	///
					Non voters , ///
					Other parties,	///
					SPD,	///
					undecided, ///
					Volt
	
	end

	colorpalette wahlswiperwanderung

drop if wahlabsicht_vor_small == 99	
	
	
* Sankey alle Parteien	Männer
alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if Geschlecht == 1, ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wahlswiperwanderung)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(2) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			recen(bot) 						/// 
			xsize(3) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)						///
			title("Men", size(small))

	graph save "results\dump\fig_4_1.gph", replace
	graph export "results\dump\fig_4_1.emf", replace		
	graph export "results\dump\fig_4_1.pdf", replace		
	
	
* Frauen
* color palette
	capture program drop colorpalette_wahlswiperwanderung
	program colorpalette_wahlswiperwanderung
	  c_local P 	#40c9ff	,	/// AfD
				#3ee32b ,	/// Animal Protection Party
				#9c247a ,	/// BSW
				#5e5e5e ,	/// CDU_CSU
				#ffed00 ,	/// FDP		
				#e88a25 ,	/// Free Voters
				#2fa322 , 	/// Greens
				#f653a6 ,	/// Left
				#08807e , 	/// Non Voter
				#dbab81 , 	/// Other parties
				#e3000f	, 	/// SPD		
				#0ddbd8 ,	/// Undecided
				#9156c7 ,	///	Volt

	 c_local I 		AfD,	///
					Animal Protection Party, ///
					BSW,	///
					CDU/CSU, 	///
					FDP,	///
					Free Voters,	///
					Greens,	///
					Left,	///
					Non voters , ///
					Other parties,	///
					SPD,	///
					undecided, ///
					Volt
	end

	colorpalette wahlswiperwanderung

drop if wahlabsicht_vor_small == 99	
	
	
* Sankey alle Parteien Frauen	
alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if Geschlecht == 2, ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wahlswiperwanderung)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(2) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			recen(bot) 						/// 
			xsize(2) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)						///
			title("Women", size(small))

	graph save "results\dump\fig_4_2.gph", replace
	graph export "results\dump\fig_4_2.emf", replace		
	graph export "results\dump\fig_4_2.pdf", replace		
	
	graph combine "results\dump\fig_4_2.gph" "results\dump\fig_4_1.gph" , scale (1.3)
	graph export "results\fig\figure_A4.emf", replace
	graph export "results\fig\figure_A4.pdf", replace

	
	
**************************************************************************************************************************************************************
*
*					Figure A5
*
**************************************************************************************************************************************************************	
	
****** Altersgruppen
	
	* Unter 30
	* Sankey alle Parteien	
alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if age_group_3 ==1, ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wahlswiperwanderung)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(2) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			recen(bot) 						/// 
			xsize(1) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)						///
			title("18-30", size(small))

	graph save "results\dump\fig_5_1.gph", replace
	graph export "results\dump\fig_5_1.emf", replace		
	graph export "results\dump\fig_5_1.pdf", replace	
	
	* 31-60
	* Sankey alle Parteien	
alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if age_group_3 == 2, ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wahlswiperwanderung)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(2) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			recen(bot) 						/// 
			xsize(1) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)						///
			title("31-60", size(small))

	graph save "results\dump\fig_5_2.gph", replace
	graph export "results\dump\fig_5_2.emf", replace		
	graph export "results\dump\fig_5_2.pdf", replace	

	* 60+
	* Sankey alle Parteien	
alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if age_group == 3, ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wahlswiperwanderung)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(2) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			recen(bot) 						/// 
			xsize(1) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)						///
			title("61-94", size(small))

	graph save "results\dump\fig_5_3.gph", replace
	graph export "results\dump\fig_5_3.emf", replace		
	graph export "results\dump\fig_5_3.pdf", replace		
	
	graph combine "results\dump\fig_5_1.gph" "results\dump\fig_5_2.gph" "results\dump\fig_5_3.gph", col(3) scale(1.1)
	graph export "results\fig\figure_A5.emf", replace
	graph export "results\fig\figure_A5.pdf", replace	
	

**************************************************************************************************************************************************************
*
*					Figure 5
*
**************************************************************************************************************************************************************	
	
********************************
* Schulbildung	
	
	* kein Abitur
* color palette
	capture program drop colorpalette_wahlswiperwanderung
	program colorpalette_wahlswiperwanderung
	 c_local P 	#40c9ff	,	/// AfD
				#3ee32b ,	/// Animal Protection Party
				#9c247a ,	/// BSW
				#5e5e5e ,	/// CDU_CSU
				#ffed00 ,	/// FDP		
				#e88a25 ,	/// Free Voters
				#2fa322 , 	/// Greens
				#f653a6 ,	/// Left
				#08807e , 	/// Non Voter
				#dbab81 , 	/// Other parties
				#e3000f	, 	/// SPD		
				#0ddbd8 ,	/// Undecided
				#9156c7 ,	///	Volt

	 c_local I 		AfD,	///
					Animal Protection Party, ///
					BSW,	///
					CDU/CSU, 	///
					FDP,	///
					Free Voters,	///
					Greens,	///
					Left,	///
					Non voters , ///
					Other parties,	///
					SPD,	///
					undecided, ///
					Volt
	 	
	end

	colorpalette wahlswiperwanderung

drop if wahlabsicht_vor_small == 99	
	
	
* Sankey alle Parteien	
alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if abitur == 0, ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wahlswiperwanderung)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(2) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			recen(bot) 						/// 
			xsize(2) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)						///
			title("Low/medium education", size(small))

	graph save "results\dump\fig_6_1.gph", replace
	graph export "results\dump\fig_6_1.emf", replace		
	graph export "results\dump\fig_6_1.pdf", replace		
	
	
* Abitur
* color palette
	capture program drop colorpalette_wahlswiperwanderung
	program colorpalette_wahlswiperwanderung
	  c_local P 	#40c9ff	,	/// AfD
				#3ee32b ,	/// Animal Protection Party
				#9c247a ,	/// BSW
				#5e5e5e ,	/// CDU_CSU
				#ffed00 ,	/// FDP		
				#e88a25 ,	/// Free Voters
				#2fa322 , 	/// Greens
				#f653a6 ,	/// Left
				#08807e , 	/// Non Voter
				#dbab81 , 	/// Other parties
				#e3000f	, 	/// SPD		
				#0ddbd8 ,	/// Undecided
				#9156c7 ,	///	Volt

	 c_local I 		AfD,	///
					Animal Protection Party, ///
					BSW,	///
					CDU/CSU, 	///
					FDP,	///
					Free Voters,	///
					Greens,	///
					Left,	///
					Non voters , ///
					Other parties,	///
					SPD,	///
					undecided, ///
					Volt
	end

	colorpalette wahlswiperwanderung

drop if wahlabsicht_vor_small == 99	
	
	
* Sankey alle Parteien	
alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if abitur == 1, ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wahlswiperwanderung)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(2) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			recen(bot) 						/// 
			xsize(2) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)						///
			title("High education", size(small))

	graph save "results\dump\fig_6_2.gph", replace
	graph export "results\dump\fig_6_2.emf", replace		
	graph export "results\dump\fig_6_2.pdf", replace		
	
	graph combine "results\dump\fig_6_1.gph" "results\dump\fig_6_2.gph" , scale(1.4)
	graph export "results\fig\figure_5.emf", replace
	graph export "results\fig\figure_5.pdf", replace

	
	
**************************************************************************************************************************************************************
*
*					Figure A6
*
**************************************************************************************************************************************************************
	
********************************
* Ost-West	


	
	* Ost
* color palette
	capture program drop colorpalette_wahlswiperwanderung
	program colorpalette_wahlswiperwanderung
	   c_local P 	#40c9ff	,	/// AfD
				#3ee32b ,	/// Animal Protection Party
				#9c247a ,	/// BSW
				#5e5e5e ,	/// CDU_CSU
				#ffed00 ,	/// FDP		
				#e88a25 ,	/// Free Voters
				#2fa322 , 	/// Greens
				#f653a6 ,	/// Left
				#08807e , 	/// Non Voter
				#dbab81 , 	/// Other parties
				#e3000f	, 	/// SPD		
				#0ddbd8 ,	/// Undecided
				#9156c7 ,	///	Volt

	 c_local I 		AfD,	///
					Animal Protection Party, ///
					BSW,	///
					CDU/CSU, 	///
					FDP,	///
					Free Voters,	///
					Greens,	///
					Left,	///
					Non voters , ///
					Other parties,	///
					SPD,	///
					undecided, ///
					Volt
	
	end

	colorpalette wahlswiperwanderung

drop if wahlabsicht_vor_small == 99	
	
	
* Sankey alle Parteien	
alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if ostdeutschland == 1, ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wahlswiperwanderung)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(2) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			recen(bot) 						/// 
			xsize(2) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)						///
			title("East Germany", size(small))

	graph save "results\dump\fig_7_1.gph", replace
	graph export "results\dump\fig_7_1.emf", replace		
	graph export "results\dump\fig_7_1.pdf", replace		
	
	
* Westdtl
* color palette
	capture program drop colorpalette_wahlswiperwanderung
	program colorpalette_wahlswiperwanderung
	   c_local P 	#40c9ff	,	/// AfD
				#3ee32b ,	/// Animal Protection Party
				#9c247a ,	/// BSW
				#5e5e5e ,	/// CDU_CSU
				#ffed00 ,	/// FDP		
				#e88a25 ,	/// Free Voters
				#2fa322 , 	/// Greens
				#f653a6 ,	/// Left
				#08807e , 	/// Non Voter
				#dbab81 , 	/// Other parties
				#e3000f	, 	/// SPD		
				#0ddbd8 ,	/// Undecided
				#9156c7 ,	///	Volt

	 c_local I 		AfD,	///
					Animal Protection Party, ///
					BSW,	///
					CDU/CSU, 	///
					FDP,	///
					Free Voters,	///
					Greens,	///
					Left,	///
					Non voters , ///
					Other parties,	///
					SPD,	///
					undecided, ///
					Volt
	end

	colorpalette wahlswiperwanderung

drop if wahlabsicht_vor_small == 99	
	
	
* Sankey alle Parteien	
alluvial wahlabsicht_vor_small wahlswiper_top_1_middle wahlabsicht_nach_small if ostdeutschland == 0, ///
			smooth(6) 						/// Krümmung der Verbindungslinien 
			alpha(60) 						/// Helligkeit der Verbindungslinien
			palette(wahlswiperwanderung)    /// Farbpalette (darauf achten, dass alle Parteien in Palette drin sind , alphabetisch sortiert)
			labsize(1.6) 					/// Größe der Labels (in den Boxen)
			valsize(1.3)  					/// Größe der Labels (von den Verbindungslinien)
			laba(0) 						/// horizontale Labels
			boxw(8) 						/// Breite der Box
			gap(1) 							/// Gap zwischen den Parteien (vertikaler gap)
			valcond(2) 						/// Value Labels ab 1% werden angezeigt
			novalleft 						/// Ausgehende Values auf der linken Seite der Verbindungslinien werden NICHT angezeigt
			labpos(2) 						/// Position der Labels in der Box (vertikal)
			showtotal 						/// Werte für Boxen werden angezeigt
			wrapcat(20) 					///
			wraplab(25) 					///
			catpos(0)						/// Position der Beschriftungen unten (horizontal)
			catgap(2) 						/// Position der Beschriftungen unten (vertikal)
			plotregion(margin(b+3 l+3 r+8)) /// plotregion
			recen(bot) 						/// 
			xsize(2) ysize(3)				/// Größe x und y
			percent							///
			format(%4.1f) 					///
			labgap(-2)						///
			title("West Germany", size(small))

	graph save "results\dump\fig_7_2.gph", replace
	graph export "results\dump\fig_7_2.emf", replace		
	graph export "results\dump\fig_7_2.pdf", replace		
	
	graph combine "results\dump\fig_7_1.gph" "results\dump\fig_7_2.gph", scale(1.4)
	graph export "results\fig\figure_A6.emf", replace
	graph export "results\fig\figure_A6.pdf", replace
	
		
*********************************************************************************************************************************
*	
*											Logit Voting intention shift
*
*********************************************************************************************************************************	

**************************************************************************************************************************************************************
*
*					Figure 6
*
**************************************************************************************************************************************************************	
	
********
* Veränderung Position wahlabsicht_vor --> wahlabsicht_nach
gen veränderung_wahlabsicht = .
replace veränderung_wahlabsicht = 1 if wahlabsicht_vor_large != wahlabsicht_nach_large
replace veränderung_wahlabsicht = 0 if wahlabsicht_vor_large == wahlabsicht_nach_large
replace veränderung_wahlabsicht = . if wahlabsicht_vor_large == .	
replace veränderung_wahlabsicht = . if wahlabsicht_vor_large == .a
replace veränderung_wahlabsicht = . if wahlabsicht_nach_large == .
replace veränderung_wahlabsicht = . if wahlabsicht_vor_large == .a	
	
* WahlSwiper-Ergebnis Top1 gleich wie Wahlabsicht vor
gen wahlswiper_trifft = .
replace wahlswiper_trifft = 1 if wahlabsicht_vor_large == wahlswiper_top_1_large	
replace wahlswiper_trifft = 0 if wahlabsicht_vor_large != wahlswiper_top_1_large	
replace wahlswiper_trifft = . if wahlabsicht_vor_large == .		
replace wahlswiper_trifft = . if wahlabsicht_vor_large == .a
replace wahlswiper_trifft = . if wahlswiper_top_1_large == .	
replace wahlswiper_trifft = . if wahlswiper_top_1_large == .a	
	
* WahlSwiper-Ergebnis Top1 - Top3 gleich wie Wahlabsicht vor	
gen wahlswiper_trifft3 = 0	
replace wahlswiper_trifft3 = 1 if wahlabsicht_vor_large == wahlswiper_top_1_large	
replace wahlswiper_trifft3 = 1 if wahlabsicht_vor_large == wahlswiper_top_2_large	
replace wahlswiper_trifft3 = 1 if wahlabsicht_vor_large == wahlswiper_top_3_large	
replace wahlswiper_trifft3 = . if wahlabsicht_vor_large == .		
replace wahlswiper_trifft3 = . if wahlabsicht_vor_large == .a	
replace wahlswiper_trifft3 = . if wahlswiper_top_1_large == .	
replace wahlswiper_trifft3 = . if wahlswiper_top_1_large == .a		
	
* WahlSwiper-Ergebnis Top1 UNgleich wie Wahlabsicht vor
gen wahlswiper_daneben = .
replace wahlswiper_daneben = 0 if wahlabsicht_vor_large == wahlswiper_top_1_large	
replace wahlswiper_daneben = 1 if wahlabsicht_vor_large != wahlswiper_top_1_large	
replace wahlswiper_daneben = . if wahlabsicht_vor_large == .		
replace wahlswiper_daneben = . if wahlabsicht_vor_large == .a
replace wahlswiper_daneben = . if wahlswiper_top_1_large == .	
replace wahlswiper_daneben = . if wahlswiper_top_1_large == .a	
	
* WahlSwiper-Ergebnis Top1 - Top3 UNgleich wie Wahlabsicht vor	
gen wahlswiper_daneben3 = .	
replace wahlswiper_daneben3 = 0 if wahlabsicht_vor_large == wahlswiper_top_1_large	
replace wahlswiper_daneben3 = 0 if wahlabsicht_vor_large == wahlswiper_top_2_large	
replace wahlswiper_daneben3 = 0 if wahlabsicht_vor_large == wahlswiper_top_3_large	
replace wahlswiper_daneben3 = 1 if wahlabsicht_vor_large != wahlswiper_top_1_large ///
								& wahlabsicht_vor_large != wahlswiper_top_2_large ///
								& wahlabsicht_vor_large != wahlswiper_top_3_large
replace wahlswiper_daneben3 = . if wahlabsicht_vor_large == .		
replace wahlswiper_daneben3 = . if wahlabsicht_vor_large == .a	
replace wahlswiper_daneben3 = . if wahlswiper_top_1_large == .	
replace wahlswiper_daneben3 = . if wahlswiper_top_1_large == .a	
	
logit 	veränderung_wahlabsicht wahlswiper_daneben3 i.gender i.age_group_3  i.ostdeutsch  i.education i.wahlabsicht_vor_small if gender <3, or
coefplot , eform xline(1) drop(_cons    )  	///
							coeflabels(wahlswiper_daneben3 = `" "Initial voting intention NOT" "among top 3 Voteswiper matches" "') ///
							headings(	2.age_group_3 = "{it: Age group} (reference: 18-30)" ///
							2.education_3 = "{it: Education} (reference: Low)" ///
							2.gender = "{it: Gender} (reference: Male)" ///
							1.ostdeutschland = "{it: Region} (reference: West Germany)" ///
							2.wahlabsicht_vor_small = "{it: Initial voting intention} (reference: CDU/CSU)") ///
							xsize(4) ysize(3) scale(.8) ///
							msymbol(d) mcolor(white)    ///
   levels(99 95 90) ciopts(lwidth(3 ..) lcolor(*.2 *.4 *.6 )) ///
   legend(title("CI") order(1 "99%" 2 "95%" 3 "90%") rows(1) pos(6))
  gr_edit .xaxis1.reset_rule 9, tickset(major) ruletype(suggest) 
// xaxis1 edits

 gr_edit .yaxis1.major.num_rule_ticks = 0
 gr_edit  .yaxis1.edit_tick 2 4 `"Female"', custom tickset(major) editstyle(tickstyle(textgap(0.5)) )
// yaxis1 edits
graph export "results\fig\figure_6.emf", replace	
graph export "results\fig\figure_6.pdf", replace							
													
**************************************************************************************************************************************************************
*
*					Figure A7
*
**************************************************************************************************************************************************************										
logit 	veränderung_wahlabsicht wahlswiper_daneben3 i.gender i.age_group_3  i.ostdeutsch  i.education i.wahlabsicht_vor_small if gender <3 & wahlabsicht_vor_small < 10 [iweight = ipf_gewicht], or
coefplot , eform xline(1) drop(_cons    )  	///
							coeflabels(wahlswiper_daneben3 = `" "Initial voting intention NOT" "among top 3 Voteswiper matches" "') ///
							headings(	2.age_group_3 = "{it: Age group} (reference: 18-30)" ///
							2.education_3 = "{it: Education} (reference: Low)" ///
							2.gender = "{it: Gender} (reference: Male)" ///
							1.ostdeutschland = "{it: Region} (reference: West Germany)" ///
							2.wahlabsicht_vor_small = "{it: Initial voting intention} (reference: CDU/CSU)") ///
							xsize(4) ysize(3) scale(.8) ///
							msymbol(d) mcolor(white)    ///
   levels(99 95 90) ciopts(lwidth(3 ..) lcolor(*.2 *.4 *.6 )) ///
   legend(title("CI") order(1 "99%" 2 "95%" 3 "90%") rows(1) pos(6))
  gr_edit .xaxis1.reset_rule 9, tickset(major) ruletype(suggest) 
// xaxis1 edits

 gr_edit .yaxis1.major.num_rule_ticks = 0
 gr_edit  .yaxis1.edit_tick 2 4 `"Female"', custom tickset(major) editstyle(tickstyle(textgap(0.5)) )
// yaxis1 edits
graph export "results\fig\figure_A7.emf", replace	
graph export "results\fig\figure_A7.pdf", replace	
	
	
**************************************************************************************************************************************************************
*
*					Figure 7
*
**************************************************************************************************************************************************************
	
logit 	veränderung_wahlabsicht wahlswiper_daneben3##i.ostdeutsch wahlswiper_daneben3##i.gender wahlswiper_daneben3##i.age_group_3    wahlswiper_daneben3##i.education  i.wahlabsicht_vor_small if gender <3

margins, at(gender = (1(1)2) wahlswiper_daneben3 = (0(1)1) )
mplotoffset, recast(scatter) ///
xtitle("") ytitle("Predicted probability of a change in voting intention") title("") subtitle("Gender") ///
legend(title("Initial voting intention...") pos(6) col(2) order(3 "among top 3 Voteswiper matches"  4 "NOT among top 3 Voteswiper matches" ))
graph save "results\dump\fig_9_1.gph", replace

margins, at(age_group_3 = (1(1)3) wahlswiper_daneben3 = (0(1)1) )
mplotoffset, recast(scatter) ///
xtitle("") ytitle("") title("") subtitle("Age group") ///
legend(title("Initial voting intention...") pos(6) col(2) order(3 "among top 3 Voteswiper matches"  4 "NOT among top 3 Voteswiper matches" ))
graph save "results\dump\fig_9_2.gph", replace

margins, at(education_3 = (1(1)3) wahlswiper_daneben3 = (0(1)1) )
mplotoffset, recast(scatter) ///
xtitle("") ytitle("") title("") subtitle("Education") ///
legend(title("Initial voting intention...") pos(6) col(2) order(3 "among top 3 Voteswiper matches"  4 "NOT among top 3 Voteswiper matches" ))
graph save "results\dump\fig_9_3.gph", replace

margins, at(ostdeutsch = (0(1)1) wahlswiper_daneben3 = (0(1)1) )
mplotoffset, recast(scatter) ///
xtitle("") ytitle("") title("") subtitle("Region") ///
legend(title("Initial voting intention...") pos(6) col(2) order(3 "among top 3 Voteswiper matches"  4 "NOT among top 3 Voteswiper matches" ))
graph save "results\dump\fig_9_4.gph", replace

grc1leg "results\dump\fig_9_1.gph" "results\dump\fig_9_2.gph" "results\dump\fig_9_3.gph" "results\dump\fig_9_4.gph", col(4)	xsize(8) ysize(3) ycom
graph export "results\fig\figure_7.emf", replace	
graph export "results\fig\figure_7.pdf", replace







**************************************************************************************************************************************************************
*
*					Figure 8
*
**************************************************************************************************************************************************************
logit 	veränderung_wahlabsicht wahlswiper_daneben3##i.wahlabsicht_vor_small i.gender i.ostdeutsch  i.age_group_3    i.education   if gender <3
estimates store logit
margins, at(wahlabsicht_vor_small = (1 2 3 4 5 6 7 90 ) wahlswiper_daneben3 =(0(1)1) gender = 1 age_group_3 = 2 ostdeutsch = 0 education_3 = 3)
mplotoffset ,  recast(scatter) ///
xlabel( 0 `" "Among" "top 3" "'             1 `" "¬Among" "top 3" "' , labsize(mlarge)) ///
	xtitle("") ytitle("Predicted probability of a change in voting intention")  /// 
	by(wahlabsicht_vor_small) byopts(col(8) im(medium) title ("") subtitle("Initial voting intention ...")  ) ///
	legend(pos(6) col(2))  aspect(6) xsize(8) ysize(4)
	graph save "results\fig\figure_8.gph", replace
graph export "results\fig\figure_8.emf", replace	
graph export "results\fig\figure_8.pdf", replace

**************************************************************************************************************************************************************
*
*					Figure A8
*
**************************************************************************************************************************************************************
logit 	veränderung_wahlabsicht wahlswiper_daneben3##i.wahlabsicht_vor_small##i.gender i.ostdeutsch  i.age_group_3    i.education   if gender <3
estimates store logit
margins, at(wahlabsicht_vor_small = (1 2 3 4 5 6 7 90 ) wahlswiper_daneben3 =(0(1)1) gender = (1(1)2) )
mplotoffset ,  recast(scatter) ///
xlabel( 0 `" "Among" "top 3" "'             1 `" "¬Among" "top 3" "' , labsize(mlarge)) ///
	xtitle("") ytitle("Predicted probability of a change in voting intention")  /// 
	by(wahlabsicht_vor_small) byopts(col(4) im(medium) title ("") subtitle("Initial voting intention ...")  ) ///
	legend(pos(6) col(2) )  
graph export "results\fig\figure_A8.emf", replace	
graph export "results\fig\figure_A8.pdf", replace


**************************************************************************************************************************************************************
*
*					Figure A9
*
**************************************************************************************************************************************************************
logit 	veränderung_wahlabsicht wahlswiper_daneben3##i.wahlabsicht_vor_small##i.age_group_3 i.ostdeutsch  i.gender    i.education   if gender <3
estimates store logit
margins, at(wahlabsicht_vor_small = (1 2 3 4 5 6 7 90 ) wahlswiper_daneben3 =(0(1)1)   age_group_3 = (1(1)3) )
mplotoffset ,  recast(scatter) ///
xlabel( 0 `" "Among" "top 3" "'             1 `" "¬Among" "top 3" "' , labsize(mlarge)) ///
	xtitle("") ytitle("Predicted probability of a change in voting intention")  /// 
	by(wahlabsicht_vor_small) byopts(col(4) im(medium) title ("") subtitle("Initial voting intention ...")  ) ///
	legend(pos(6) col(3) )  
graph export "results\fig\figure_A9.emf", replace	
graph export "results\fig\figure_A9.pdf", replace

**************************************************************************************************************************************************************
*
*					Figure A10
*
**************************************************************************************************************************************************************
logit 	veränderung_wahlabsicht wahlswiper_daneben3##i.wahlabsicht_vor_small##i.education_3 i.ostdeutsch  i.age_group_3    i.gender   if gender <3
estimates store logit
margins, at(wahlabsicht_vor_small = (1 2 3 4 5 6 7 90 ) wahlswiper_daneben3 =(0(1)1) education_3 =(1(1)3) )
mplotoffset ,  recast(scatter) ///
xlabel( 0 `" "Among" "top 3" "'             1 `" "¬Among" "top 3" "' , labsize(mlarge)) ///
	xtitle("") ytitle("Predicted probability of a change in voting intention")  /// 
	by(wahlabsicht_vor_small) byopts(col(4) im(medium) title ("") subtitle("Initial voting intention ...")  ) ///
	legend(pos(6) col(3))
graph export "results\fig\figure_A10.emf", replace	
graph export "results\fig\figure_A10.pdf", replace


**************************************************************************************************************************************************************
*
*					Figure A11
*
**************************************************************************************************************************************************************
logit 	veränderung_wahlabsicht wahlswiper_daneben3##i.wahlabsicht_vor_small##i.ostdeutsch i.gender  i.age_group_3    i.education   if gender <3
estimates store logit
margins, at(wahlabsicht_vor_small = (1 2 3 4 5 6 7 90 ) wahlswiper_daneben3 =(0(1)1) ostdeutsch =(0(1)1))
mplotoffset ,  recast(scatter) ///
xlabel( 0 `" "Among" "top 3" "'             1 `" "¬Among" "top 3" "' , labsize(mlarge)) ///
	xtitle("") ytitle("Predicted probability of a change in voting intention")  /// 
	by(wahlabsicht_vor_small) byopts(col(4) im(medium) title("") subtitle("Initial voting intention ...") ) ///
	legend(pos(6) col(2) )
graph export "results\fig\figure_A11.emf", replace	
graph export "results\fig\figure_A11.pdf", replace


	
	
